// pages/category/index.js
import { request } from "../../request/index.js";
import regeneratorRuntime from '../../lib/runtime/runtime';
Page({

  /**
   * 页面的初始数据
   */
  data: {
    leftMenuList: [], 
    rightContent: [],
    currentIndex: 0,
    // 右侧内容的滚动条距离顶部的距离
    scrollTop: 0
  },
  // 接口的返回数据
  Cates: [],
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // this.getCates();
    /* 
   0 web中的本地存储和 小程序中的本地存储的区别
     1 写代码的方式不一样了 
       web: localStorage.setItem("key","value") localStorage.getItem("key")
   小程序中: wx.setStorageSync("key", "value"); wx.getStorageSync("key");
     2:存的时候 有没有做类型转换
       web: 不管存入的是什么类型的数据，最终都会先调用以下 toString(),把数据变成了字符串 再存入进去
     小程序: 不存在 类型转换的这个操作 存什么类似的数据进去，获取的时候就是什么类型
   1 先判断一下本地存储中有没有旧的数据
     {time:Date.now(),data:[...]}
   2 没有旧数据 直接发送新请求 
   3 有旧的数据 同时 旧的数据也没有过期 就使用 本地存储中的旧数据即可
    */
    const Cates = wx.getStorageSync("cates"); 
    if(!Cates){
      //不存在，就发送请求
      this.getCates();
    }else{
      //存在，判断时间是否过期
      if(Date.now()- Cates.time > 1000*10){
          //超过时间 重新请求
          this.getCates();
      }else{
        //使用旧数据来刷新页面
        console.log("使用缓存...");
        this.Cates = Cates.data;
        let leftMenuList = this.Cates.map(v => v.cat_name);
        let rightContent = this.Cates[0].children;
        this.setData({
          leftMenuList,
          rightContent
        })
      }
    }
  },

  async getCates() {
    // request({ url: "/categories" })
    //   .then(result => {
    //     this.Cates = result.data.message;
    //     wx.setStorageSync("cates", { time: Date.now(), data: this.Cates });
    //     let leftMenuList = this.Cates.map(v => v.cat_name);
    //     let rightContent = this.Cates[0].children;
    //     this.setData({
    //       leftMenuList,
    //       rightContent
    //     })
    //   })

     //1 使用es7de async await来发送请求
     const res = await request({url:"/categories"});
     this.Cates = res;
           let leftMenuList = this.Cates.map(v => v.cat_name);
     let rightContent = this.Cates[0].children;
     this.setData({
       leftMenuList,
       rightContent
     })
  },

  handleItemTap(e) {
    const { index } = e.currentTarget.dataset;
    console.log("点击的位置是：", index);
    let rightContent = this.Cates[index].children;
    this.setData({
      currentIndex: index,
      rightContent,
      // 重新设置 右侧内容的scroll-view标签的距离顶部的距离
      scrollTop: 0
    })

  }



})
